rev 0. : 13/12/2013
Last Update 17/04/2021
*Petite Fat sur SD-card (13/12/2013)
*Test
MikroC Fat32 librairie (04/11/2020)
Petite Fat sur SD-card (
PIC18F26K22)
Préparation de la carte SD :
![]() |
![]() |
![]() |
formattage SD card en FAT32 | proprietes SDcard |
mise en place d'un fichier de test |
Interface lecteur de carte SD
Carte SANDISK 2GB
Interface Mininthebox ref
![]() |
![]() |
![]() |
support de carte SD-Cad Sandisk 2Gb | liaison au PIC via MSSP1 | liaisons SDCARD <---->PIC |
Problemes rencontres :
- Adaptation au PIC18F26K22 :
- Config bits differents
- gestion UART1 (car 2 UART dans ce PIC) sur RC6(tx) et RC7(rx
not used)
- Reaffectation des ports E/S Port C au lieu de D pour MSSP1
- Probleme : pas d'info presence carte SD sur cet interface... =>
ignoré !
- Il faut bien au PREALABLE initialiser la carte SD en FAT32
et secteur de 512 octets ( fait sur un autre PC
avec lecteur de Carte !)
- Mettre un petit fichier de texte dessus ! car le test commence
par une LECTURE de fichier !
- Adaptation des fichier Hardwareprofil.h et aussi de l'init
Hardware dans le main.c !
- rajout d'une variable de pistage pas=0 ..etc .. rajoutéee au
message d'erreur ..
- probleme declaration bigbuffer de 512 bytes et debordement du
aux autres variables du programme..
il faut rajouter #pragma udata apres la reservation dudit buffer
probleme mis en evidence en consultant le fichier MAP
resultant de la compilation
Test ecriture/lecture dans un secteur :
extrait fichier source : Test_ecriture_lecture_sect_512bytes.txt
Test Ecriture/Lecture dans un fichier
de taille 512x16 bytes
extrait fichier source : Test_ecriture_lecture_Fichier.txt
Resultat
Verification du contenu sur un PC
Harmonisation des fichiers destines à recevoir les datas :
Taille 250Ko chacun, remplis de blanc (0x20)
Projet avec MPLab IDE 8.92 et C18
Petite_Fat_PIC18F_131213.zip
Test
Lib FAT32 MikroC
avec SD-card 2Go et
PIC18F26K22 PDIP 28 pins
Formattage de la carte SD 2Gb
Charger le package FAT32 lib
pour PIC mikroC
aller sur Libstock
https://libstock.mikroe.com/searches
rechercher: FAT32
selectionner
108_fat32_library_v3.2.2.0.zip
copier le fichier *.ZIP dans le directory MikroC Packages
Ne recuperer que la version qui vous interesse : ici version PIC
MikroC
1366882085_fat32_library_mikroc_pic.mpkg
nota: * les librairies plus
rescentes sont pour le SDK MikroC
lancer l'outils MikroC PackManager
ou directement l'executable
C:\_MikroC\mikroC PRO for PIC\Package
Manager\PackageManager.exe
Choix du package :
File
Open Package
Install package ..
( si installe par défaut, copy sur tous les PICs pouvant le
recevoir !)
sinon pour une installation Individuelle
sur le PIC de VOTRE choix :
clicker sur FAT32_Defs
Ouvrir l'onglet Devices
Selectionner votre PIC dans la liste des PICs
vous pouvez aussi , déselectionner tous les PICs non concernés
ou rajouter certains Pics que vous avez par ailleurs..
puis click sur grosse fleche verte à droite
installe la lib dans tous les PIC selectionnés, de sorte à
retrouver dans le lib manager ,
le choix possible de cette librairie Fat32
on obtient
alors l'acces à la nouvelle lib , dispo dans additionnal
librairies
FAT32, FAT32_Defs,FAT32_Drivers
et les fichiers FAT32 sont au meme endroit sur le disque !
il existe une aide , et des exemples
J'ai donc , à partir de l'exemple MikroC , basé sur un P18F87K22
DIP40 et carte Microclick SDcard
testé :
TEST avec PIC18F26K22
Hardware :
MCU PDIP 28 pins et carte SDCARD +
Sandisk 2Gb classe 2
* NOTES: SANDISK 2GB classe 2
Platine support SD-CARD mininthebox Module SD Card #00407346 3.67
// 4 VCC 3.3V (internal from voltage regulator 5V -> 3,3V)
// 1--- 6 VSS Alim 5V DC
// 6----3 VSS
#define SD_CS PORTCbits.RC0 -----> // 5----1 CS SD Card pins
#define SD_DO PORTCbits.RC5 -----> // 4----2 DI MOSI
#define SD_DI PORTCbits.RC4 <------ // 2----7 DO MISO
#define SD_CLCK PORTCbits.RC3 -> // 3----5 CLCK
#define SD_WP PORTCbits.RC2 -----// Card Write Protect Not Exist
#define SD_CD PORTAbits.RA3 -----// Card Detect .. Not Exist
***************************************
J'utilise ma carte BASE
18F26K22
Liaison UART1 : TX (RC6) et RX (RC7)
Liaison SPI 1 hardware sur RC3=clock RC4=MISO et RC5= MOSI et CS
card sur RC0
Alim 5V DC ( la Carte SDCARD supporte le 5V! car regulateur 3,3V
sur la carte)
Software :
Petis amenagement pour utiliser un PDIP28 au lieu de DIP40
CS sur PORT RC0 au lieu de PORT D
FOSC interne de 16x4=64MHz au lieu de FOSC Quartz
et autres petits détails .. à ma façon
Le 1er test etait négatif .. blocage apres l'init FAT32
à cause du SPI trop rapide ( pour une SD
card type 2!) , diminuer la vitesse max du SPI par 4
// 2 Tests : LNF_TEST + File TEST +->compile OK
// mais bloque sur ligne trop longue sur
terminal
// reduction drastique du nombre d'element ecris 1000 -> 20
// rajout d'un CR,LF dans les donnéees
ecrites , pour lamise en page sur terminal
/ ===> File TEST + LNF_TEST ... OK
3em Test OK
fichier log (sur UART) :
Ouverture en Lecture de "FILE1.TXT"
Size of Read Buffer = 20
Lecture de "FILE1.TXT"
ABCDEFGHIJKL0
ABCDEFGHIJKL1
ABCDEFGHIJKL2
ABCDEFGHIJKL3
ABCDEFGHIJKL4
ABCDEFGHIJKL5
ABCDEFGHIJKL6
ABCDEFGHIJKL7
ABCDEFGHIJKL8
ABCDEFGHIJKL9
sumary result :
MMC:\
----L--- 12/11/2020 13:59 MMC
---D-SH- DIR 12/11/2020 11:44 System Volume Information
--A----- 1848 12/11/2020 13:59 X_FILES.TXT
--A---H- 160 00/00/2048 00:00 FILE1.TXT
Free Space Info:
Free clusters: 3792944
Free bytes: 1941987328
=================
Scan Disk Info:
Total clusters: 3792953
Free clusters: 3792944
Bad clusters: 0
=================
PB de date sur les
fichier simultés dans l'exemple, mais Date OK sur les fichiers
crées sous win10
car pas de temps reel dans ce
programme, sans RTC !
en conclusion :
tres peu de déboire pour utiliser
cette Lib MikroC
Les librairies utilisés pour gerer la carte SD
_Lib_Mmc.mcl" "
_Lib_FAT32_Driver.mcl" "
_Lib_FAT32_Defs.mcl" "
_Lib_FAT32.mcl"
En consultant les statistiques, on voit que la lib FAT32 utilise BEAUCOUP
de ressources !
Used RAM (bytes): 2818 (73%) Free RAM (bytes): 1057 (27%)
Used ROM (bytes): 46389 (71%) Free ROM (bytes): 19147 (29%)
il n'existe plus qu"un tiers
des ressources dispo sur ce PIC, pour l' Application !
Mieux vaut prévoir un PIC COSTAUD .. exemple: 18F27K42 pour une
grosse application ! (compatible pinout).
Librairies utilisées:
_Lib_Math.mcl" "
_Lib_MathDouble.mcl" "
_Lib_System.mcl" "
_Lib_Delays.mcl" "
_Lib_CString.mcl" "
_Lib_Conversions.mcl" "
_Lib_SPI_c345b123.mcl" "
_Lib_UART_c67b67.mcl" "
_Lib_Mmc.mcl" "
_Lib_FAT32_Driver.mcl" "
_Lib_FAT32_Defs.mcl" "
_Lib_FAT32.mcl"
0 103 Finished successfully: 12 nov. 2020, 14:11:36
SD_FAT32_512_sur_BASE_18F26K22_2020_11.mcppi
Projet MikroC :
Base_18F26K22_MMC_SDCARD_Test_FAT32_512b_2020_1112.zip
SD_FAT32_512_sur_BASE_18F26K22_2020_1112.hex
P18F26K22_FOSC_interne_16xPLL_64MHz_RA6_FreqOut.cfgsch
Base_18F26K22_MMC_SDCARD_Test_FAT32_512b_2020_1112.c
Test avec clusters de 1024 bytes .. OK:
Base_18F26K22_MMC_SDCARD_Test_FAT32_1024b_2020_1110.zip
A suivre
*tests des autres fonctionalites de FAT32..
* avec un exemple pratique : EDF_Info sur carte SD avec 18F27K42
* Test appli FAT32 pour 18F4525 .. par Sanitas
Remarques:
sur
l'usage de SQA Anlyser , pour verif FOSC Out RA6 du PIC